const db = wx.cloud.database()

/*
  获取记录
  @params   _collection   集合名称
            _where        条件
            obj           排序   {field:"views",sort:"desc"}
            _limit        条数
*/

function get(_collection = "", _where = {}, obj = {
  field: "_id",
  sort: "desc"
}, _limit = 20, _skip = 0) {
  return db.collection(_collection).where(_where).skip(_skip).orderBy(obj.field, obj.sort).limit(_limit).get()
}


/*  
  根据id查询数据库
  @params   _collection  集合名称
            _id           id
*/
function getById(_collection, _id) {
  return db.collection(_collection).doc(_id).get()
}


/*
  数据库中添加记录
  @params  _collection   集合名称
           _data          数据
*/
function add(_collection = "", _data = {}) {
  return db.collection(_collection).add({
    data: _data
  })
}
/*
 修改
 @params    _colletion   集合名称
            _id           集合的id
            _data         修改的字段
*/
function update(_collection = "", _id = "", _data = {}) {
  return db.collection(_collection).doc(_id).update({
    data: _data
  })
}

/*
* 根据id删除记录
  @params   _collection  集合名称
            _id    记录的id
*/
function deleteById(_collection, _id) {
  return db.collection(_collection).doc(_id).remove()
}

/*
  累加
  @params _collection   集合名称
          _id           记录的id
          _count        增加的数量
*/
function inc(_collection, _id, _count = 1) {
  return db.collection(_collection).doc(_id).update({
    data: {
      views: db.command.inc(_count)
    }
  })
}
/*
  返回记录的条数
  @params  _collection
          _where
*/
function count(_collection, _where = {}) {
  return db.collection(_collection).where(_where).count()
}

/*
  批量删除
  @params _collection 集合名称
          _where      条件
*/
function del(_collection = "", _where = {}) {
  return wx.cloud.callFunction({
    name: "del",
    data: {
      collection: _collection,
      where: _where
    }
  })
}

export {
  get,
  add,
  update,
  deleteById,
  getById,
  inc,
  count,
  del
}